package com.sinovatech.ologger.util;

import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

public class StringHelper {
	public static boolean isEmpty(String string) {
		return string == null || string.trim().equals("") || string.trim().equals("2099-12-31");
	}

	public static boolean stringEquals(String s1, String s2) {
		if (s1 == null) {
			s1 = "";
		}
		if (s2 == null) {
			s2 = "";
		}
		return s1.equals(s2);
	}

	public static String formatName(String firstname, String surname) {
		if (surname != null && surname.length() > 0 && surname.charAt(0) > 127) // 姓为中文
			return surname + (StringHelper.isEmpty(firstname) ? "" : (firstname));
		else
			// 姓为英文
			return (StringHelper.isEmpty(firstname) ? "" : (firstname + " ")) + surname;
	}

	/**
	 * 清除空白字符 
	 * 包括 空格、回车、换行符、制表符 
	 * @param string
	 * @return
	 */
	public static String removeBlank(String string) {
		Pattern p = Pattern.compile("\\s*|\t|\r|\n");
		Matcher m = p.matcher(string);
		return m.replaceAll("");
	}

	public static String join(Object[] objs, String separator) {
		if (objs == null || objs.length == 0 || separator == null)
			return null;
		StringBuilder sb = new StringBuilder();
		for (Object obj : objs) {
			if (obj == null)
				continue;
			sb.append(separator).append(obj);
		}
		return sb.toString().substring(separator.length());
	}

	/**
	 * 数字转换
	 * @param id radix
	 * @return
	 */

	public static String smardIdConvert(String id, int radix) {
		try {
			if (StringUtils.isBlank(id))
				return null;
			long i = 0;
			if (radix == 16) {
				if (id.substring(1).equals("000000000")) {
					id += "00000";
				} else
					id += "000000";
				BigInteger bigInt = new BigInteger(id, 16);
				i = bigInt.longValue();
			} else
				i = Long.parseLong(id, radix);
			if (radix == 10)
				return Long.toHexString(Long.reverseBytes(i)).substring(0, 10);
			else if (radix == 16) {

				return buString(String.valueOf(Long.reverseBytes(i)));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	//	/**
	//	 * 10进制转换16进制
	//	 * @param str
	//	 * @return
	//	 */
	//	public static String ChangeSixteen(String str) {
	//		Integer i = Integer.parseInt(buString(str));
	//		String hexString = Integer.toHexString(i);
	//		String dbHex = reverseHexStr(buString(hexString));
	//		return dbHex;
	//	}
	//	/**
	//	 * 16进制转换10进制
	//	 * @param hexStr
	//	 * @return
	//	 */
	//	public static String Changeten(String str) {
	//		String reverseHexStr = reverseHexStr(str);
	//		Integer ni = Integer.parseInt(reverseHexStr, 16);
	//		return buString(ni.toString());
	//	}
	//	/**
	//	 * 16进制位置高位调换
	//	 * @param hexStr
	//	 * @return
	//	 */
	//	public static String reverseHexStr(String hexStr) {
	//		char[] charArray = hexStr.toCharArray();
	//		char[] newArray = new char[charArray.length];
	//		for (int i = 0; i < charArray.length; i += 2) {
	//			newArray[i] = charArray[charArray.length - i - 2];
	//			newArray[i + 1] = charArray[charArray.length - i - 1];
	//		}
	//		return String.valueOf(newArray);
	//	}
	/**
	 * 补零
	 * @param str
	 * @return
	 */
	public static String buString(String str) {
		StringBuilder s = new StringBuilder(str);
		while (s.length() < 10) {
			s.insert(0, "0");
		}
		return s.toString();
	}

}
